﻿namespace WMS6.Services
{
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.ServiceModel;
    using WMS6.DataEntity;
    using WMS6.QueryEntity;

    [ServiceContract(Namespace="WMS6.Services")]
    public interface IMessageService
    {
        [OperationContract, FaultContract(typeof(UserMessageInfo))]
        string DeleteSendMessage(List<string> UserMessageID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(UserMessageInfo)), OperationContract]
        string DeleteUserMessage(List<string> UserMessageID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(UserMessageQueryEntity)), OperationContract]
        DataSet GetAllUnreadUserMessage(PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(UserMessageQueryEntity))]
        DataSet GetInMessageInfoByQueryEntity(UserMessageQueryEntity userMessageInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(MessageCommandQueryEntity)), ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        DataSet GetMessageCommandInfoByQueryEntity(MessageCommandQueryEntity messageCommandQuery, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        DataSet GetMessageCommandInfoBySqlWhere(List<string> sqlWhere, MessageCommandQueryEntity messageCommandQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, ServiceKnownType(typeof(MessageCommandQueryEntity))]
        List<MessageCommandInfo> GetMessageCommandInfosByQueryEntity(MessageCommandQueryEntity messageCommandQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        List<MessageCommandInfo> GetMessageCommandInfosBySqlWhere(List<string> sqlWhere, MessageCommandQueryEntity messageCommandQuery, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(UserMessageQueryEntity))]
        DataSet GetUserMessageAllInfo(PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(UserMessageInfo))]
        UserMessageInfo GetUserMessageInfoByID(string userMessageID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(UserMessageQueryEntity)), OperationContract]
        DataSet GetUserMessageInfoByQueryEntity(UserMessageQueryEntity userMessageInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(UserMessageInfo)), OperationContract]
        UserUnreadMessageInfo GetUserUnreadMessageInfoByID(string userID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(MessageCommandInfo))]
        string InsertMessageCommandInfo(MessageCommandInfo messageCommandInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(List<MessageCommandInfo>)), OperationContract, ServiceKnownType(typeof(MessageCommandInfo)), ServiceKnownType(typeof(PubParasInfo))]
        bool InsertMessageCommandInfos(List<MessageCommandInfo> messageCommandInfos, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(UserMessageInfo)), ServiceKnownType(typeof(PubParasInfo))]
        string InsertUserMessageInfo(UserMessageInfo userMessageInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(UserMessageInfo)), OperationContract]
        string InsertUserMessageInfoList(List<UserMessageInfo> userMessageInfoList, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(UserMessageInfo)), OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string UpdateMarkUserMessageInfo(string rowIDs, string isRead, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(ReceiptInfo))]
        string UpdateMessageCommandInfo(MessageCommandInfo messageCommandInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(UserMessageInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string UpdateUserMessageInfo(UserMessageInfo userMessageInfo, PubParasInfo pubParasInfo);
    }
}

